package Day_0204.Linux;

/**
 * @author zxc
 * @date 2023/02/04 18:23
 **/
public class Linux_Read_Logs {
    public static void main(String[] args) {
        /**
         * Linux中查看日志
         * ===》
         * Linux查看日志的命令有多种: tail、cat、tac、head、echo等。
         *
         * 1、tail
         * （1）tail，是最常用的一种查看方式
         * （2）命令格式: tail[必要参数][选择参数][文件]
         * （3）参数 ：
         *  -f 循环读取
         *  -q 不显示处理信息
         *  -v 显示详细的处理信息
         *  -c<数目> 显示的字节数
         *  -n<行数> 显示行数
         *  -q, --quiet, --silent 从不输出给出文件名的首部
         *  -s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒
         *  例如：
         *  tail -n 10 test.log 查询日志尾部最后10行的日志;
         *  tail -n +10 test.log 查询10行之后的所有日志;
         *  tail -fn 10 test.log 循环实时查看最后1000行记录(最常用的)
         *
         * （4）一般还会配合着grep搜索用，例如 :
         *  tail -fn 1000 test.log | grep '关键字';
         *
         * （5）如果一次性查询的数据量太大,可以进行翻页查看，例如:
         *  tail -n 4700 aa.log |more -1000;
         *
         * 2、head
         * （1）跟tail是相反的head是看前多少行日志
         * （2）head -n 10 test.log 查询日志文件中的头10行日志;
         * （3）head -n -10 test.log 查询日志文件除了最后10行的其他所有日志;
         *
         * 3、cat
         * （1）cat 是由第一行到最后一行连续显示在屏幕上;
         * （2）一次显示整个文件 :
         *  $ cat filename
         * （3）从键盘创建一个文件 :
         *  $ cat > filename
         * （4）将几个文件合并为一个文件：
         *  $ cat file1 file2 > file
         *  ===》 只能创建新文件,不能编辑已有文件
         * （5）将一个日志文件的内容追加到另外一个 :
         *  $ cat -n textfile1 > textfile2
         * （6）清空一个日志文件:
         *  $ cat : >textfile2
         * （7）注意：> 意思是创建，>>是追加。
         *
         * 4、more
         * （1）more命令是一个基于vi编辑器文本过滤器，它以全屏幕的方式按页显示文本文件的内容，支持vi中的关键字定位操作。
         * （2）more名单中内置了若干快捷键，常用的有H（获得帮助信息），Enter（向下翻滚一行），空格（向下滚动一屏），Q（退出命令）。
         * （3）more命令从前向后读取文件，因此在启动时就加载整个文件。
         * （4）该命令一次显示一屏文本，满屏后停下来，并且在屏幕的底部出现一个提示信息，给出至今己显示的该文件的百分比：–More–（XX%）
         *
         * （5）more的语法：more 文件名
         *  Enter 向下n行，需要定义，默认为1行
         *  Ctrl f 向下滚动一屏
         *  空格键 向下滚动一屏
         *  Ctrl b 返回上一屏
         *  = 输出当前行的行号
         *  :f 输出文件名和当前行的行号
         *  v 调用vi编辑器
         *  !命令 调用Shell，并执行命令
         *  q 退出more
         *
         * 5、sed
         * （1）这个命令可以查找日志文件特定的一段 , 根据时间的一个范围查询，可以按照行号和时间范围查询：
         * （2）按照行号
         *  sed -n '5,10p' filename 可以只查看文件的第5行到第10行。
         * （3）按照时间段
         *  sed -n '/2014-12-17 16:17:20/,/2014-12-17 16:17:36/p' test.log
         *
         * 6、less
         * （1）less命令在查询日志时，一般流程是这样的
         *  a. less log.log
         *
         *  b. shift + G 命令到文件尾部 然后输入 ？加上你要搜索的关键字例如 ？1213
         *
         *  c. 按 n 向上查找关键字
         *
         *  d. shift+n 反向查找关键字
         * （2）less与more类似，使用less可以随意浏览文件，而more仅能向前移动，不能向后移动，而且 less 在查看之前不会加载整个文件。
         * （3）常用命令：
         *  less log2013.log 查看文件
         *  ps -ef | less ps查看进程信息并通过less分页显示
         *  history | less 查看命令历史使用记录并通过less分页显示
         *  less log2013.log log2014.log 浏览多个文件
         *
         * （4）常用命令参数：
         *  -b <缓冲区大小> 设置缓冲区的大小
         *  -g 只标志最后搜索的关键词
         *  -i 忽略搜索时的大小写
         *  -m 显示类似more命令的百分比
         *  -N 显示每行的行号
         *  -o <文件名> 将less 输出的内容在指定文件中保存起来
         *  -Q 不使用警告音
         *  -s 显示连续空行为一行
         *  /字符串：向下搜索"字符串"的功能
         *  ?字符串：向上搜索"字符串"的功能
         *  n：重复前一个搜索（与 / 或 ? 有关）
         *  N：反向重复前一个搜索（与 / 或 ? 有关）
         *  b 向后翻一页
         *  h 显示帮助界面
         *  q 退出less 命令
         *
         * 7.配合查日志的其他命令：
         *  history // 所有的历史记录
         *  history | grep XXX // 历史记录中包含某些指令的记录
         *  history | more // 分页查看记录
         *  history -c // 清空所有的历史记录
         *  !! 重复执行上一个命令
         *  查询出来记录后选中 : !323
         *
         */
    }
}
